<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>srtpdec: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
<link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
<link rel="prev" href="gst-plugins-bad-plugins-srtenc.html" title="srtenc">
<link rel="next" href="gst-plugins-bad-plugins-srtpenc.html" title="srtpenc">
<meta name="generator" content="GTK-Doc V1.28 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
<td width="100%" align="left" class="shortcuts">
<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
                  <a href="#gst-plugins-bad-plugins-srtpdec.description" class="shortcut">Description</a></span><span id="nav_properties">  <span class="dim">|</span> 
                  <a href="#gst-plugins-bad-plugins-srtpdec.properties" class="shortcut">Properties</a></span><span id="nav_signals">  <span class="dim">|</span> 
                  <a href="#gst-plugins-bad-plugins-srtpdec.signals" class="shortcut">Signals</a></span>
</td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
<td><a accesskey="p" href="gst-plugins-bad-plugins-srtenc.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="gst-plugins-bad-plugins-srtpenc.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="refentry">
<a name="gst-plugins-bad-plugins-srtpdec"></a><div class="titlepage"></div>
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2><span class="refentrytitle"><a name="gst-plugins-bad-plugins-srtpdec.top_of_page"></a>srtpdec</span></h2>
<p>srtpdec</p>
</td>
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
<a name="gst-plugins-bad-plugins-srtpdec.properties"></a><h2>Properties</h2>
<div class="informaltable"><table class="informaltable" border="0">
<colgroup>
<col width="150px" class="properties_type">
<col width="300px" class="properties_name">
<col width="200px" class="properties_flags">
</colgroup>
<tbody>
<tr>
<td class="property_type"><a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guint"><span class="type">guint</span></a></td>
<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-srtpdec.html#GstSrtpDec--replay-window-size" title="The “replay-window-size” property">replay-window-size</a></td>
<td class="property_flags">Read / Write</td>
</tr>
<tr>
<td class="property_type">
<a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstStructure.html#GstStructure-struct"><span class="type">GstStructure</span></a> *</td>
<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-srtpdec.html#GstSrtpDec--stats" title="The “stats” property">stats</a></td>
<td class="property_flags">Read</td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect1">
<a name="gst-plugins-bad-plugins-srtpdec.signals"></a><h2>Signals</h2>
<div class="informaltable"><table class="informaltable" border="0">
<colgroup>
<col width="150px" class="signals_return">
<col width="300px" class="signals_name">
<col width="200px" class="signals_flags">
</colgroup>
<tbody>
<tr>
<td class="signal_type"><span class="returnvalue">void</span></td>
<td class="signal_name"><a class="link" href="gst-plugins-bad-plugins-srtpdec.html#GstSrtpDec-clear-keys" title="The “clear-keys” signal">clear-keys</a></td>
<td class="signal_flags"><a href="/usr/share/gtk-doc/html/gobject/gobject-Signals.html#G-SIGNAL-ACTION:CAPS">Action</a></td>
</tr>
<tr>
<td class="signal_type">
<a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstCaps.html#GstCaps-struct"><span class="returnvalue">GstCaps</span></a>*</td>
<td class="signal_name"><a class="link" href="gst-plugins-bad-plugins-srtpdec.html#GstSrtpDec-hard-limit" title="The “hard-limit” signal">hard-limit</a></td>
<td class="signal_flags"><a href="/usr/share/gtk-doc/html/gobject/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td>
</tr>
<tr>
<td class="signal_type">
<a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstCaps.html#GstCaps-struct"><span class="returnvalue">GstCaps</span></a>*</td>
<td class="signal_name"><a class="link" href="gst-plugins-bad-plugins-srtpdec.html#GstSrtpDec-request-key" title="The “request-key” signal">request-key</a></td>
<td class="signal_flags"><a href="/usr/share/gtk-doc/html/gobject/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td>
</tr>
<tr>
<td class="signal_type">
<a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstCaps.html#GstCaps-struct"><span class="returnvalue">GstCaps</span></a>*</td>
<td class="signal_name"><a class="link" href="gst-plugins-bad-plugins-srtpdec.html#GstSrtpDec-soft-limit" title="The “soft-limit” signal">soft-limit</a></td>
<td class="signal_flags"><a href="/usr/share/gtk-doc/html/gobject/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td>
</tr>
<tr>
<td class="signal_type"><span class="returnvalue">void</span></td>
<td class="signal_name"><a class="link" href="gst-plugins-bad-plugins-srtpdec.html#GstSrtpDec-remove-key" title="The “remove-key” signal">remove-key</a></td>
<td class="signal_flags"><a href="/usr/share/gtk-doc/html/gobject/gobject-Signals.html#G-SIGNAL-ACTION:CAPS">Action</a></td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect1">
<a name="gst-plugins-bad-plugins-srtpdec.other"></a><h2>Types and Values</h2>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="name">
<col class="description">
</colgroup>
<tbody><tr>
<td class="datatype_keyword">struct</td>
<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-srtpdec.html#GstSrtpDec" title="struct GstSrtpDec">GstSrtpDec</a></td>
</tr></tbody>
</table></div>
</div>
<div class="refsect1">
<a name="gst-plugins-bad-plugins-srtpdec.description"></a><h2>Description</h2>
<p>gstrtpdec acts as a decoder that removes security from SRTP and SRTCP
packets (encryption and authentication) and out RTP and RTCP. It
receives packet of type 'application/x-srtp' or 'application/x-srtcp'
on its sink pad, and outs packets of type 'application/x-rtp' or
'application/x-rtcp' on its source pad.</p>
<p>For each packet received, it checks if the internal SSRC is in the list
of streams already in use. If this is not the case, it sends a signal to
the user to get the needed parameters to create a new stream : master
key, encryption and authentication mechanisms for both RTP and RTCP. If
the user can't provide those parameters, the buffer is dropped and a
warning is emitted.</p>
<p>This element uses libsrtp library. The encryption and authentication
mechanisms available are :</p>
<p>Encryption</p>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem"><p>AES_ICM 256 bits (maximum security)</p></li>
<li class="listitem"><p>AES_ICM 128 bits (default)</p></li>
<li class="listitem"><p>NULL</p></li>
</ul></div>
<p>Authentication</p>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem"><p>HMAC_SHA1 80 bits (default, maximum protection)</p></li>
<li class="listitem"><p>HMAC_SHA1 32 bits</p></li>
<li class="listitem"><p>NULL</p></li>
</ul></div>
<p>Note that for SRTP protection, authentication is mandatory (non-null)
if encryption is used (non-null).</p>
<p>Each packet received is first analysed (checked for valid SSRC) then
its buffer is unprotected with libsrtp, then pushed on the source pad.
If protection failed or the stream could not be created, the buffer
is dropped and a warning is emitted.</p>
<p>When the maximum usage of the master key is reached, a soft-limit
signal is sent to the user, and new parameters (master key) are needed
in return. If the hard limit is reached, a flag is set and every
subsequent packet is dropped, until a new key is set and the stream
has been updated.</p>
<p>If a stream is to be shared between multiple clients the SRTP
rollover counter for a given SSRC must be set in the caps "roc" field
when the request-key signal is emitted by the decoder. The rollover
counters should have been transmitted by a signaling protocol by some
other means. If no rollover counter is provided by the user, 0 is
used by default.</p>
<p>It is possible to receive a stream protected by multiple master keys, each buffer
then contains a Master Key Identifier (MKI) to identify which key was used for this
buffer. If multiple keys are needed, the first key can be specified in the caps as
"srtp-key=(buffer)key1data, mki=(buffer)mki1data", then the second one can be given in
the same caps as "srtp-key2=(buffer)key2data, mki2=(buffer)mki2data", and more can
be added up to 15.</p>
<div class="refsect3">
<a name="id-1.2.212.6.14"></a><h4>Example pipelines</h4>
<div class="informalexample">
  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
    <tbody>
      <tr>
        <td class="listing_lines" align="right"><pre>1</pre></td>
        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> udpsrc port<span class="gtkdoc opt">=</span><span class="number">5004</span> caps<span class="gtkdoc opt">=</span><span class="string">&apos;application/x-srtp, payload=(int)8, ssrc=(uint)1356955624, srtp-key=(buffer)012345678901234567890123456789012345678901234567890123456789, srtp-cipher=(string)aes-128-icm, srtp-auth=(string)hmac-sha1-80, srtcp-cipher=(string)aes-128-icm, srtcp-auth=(string)hmac-sha1-80&apos;</span> <span class="gtkdoc opt">!</span>  srtpdec <span class="gtkdoc opt">!</span> rtppcmadepay <span class="gtkdoc opt">!</span> alawdec <span class="gtkdoc opt">!</span> pulsesink</pre></td>
      </tr>
    </tbody>
  </table>
</div>

<p> Receive PCMA SRTP packets through UDP using caps to specify
master key and protection.</p>
<div class="informalexample">
  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
    <tbody>
      <tr>
        <td class="listing_lines" align="right"><pre>1</pre></td>
        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> audiotestsrc <span class="gtkdoc opt">!</span> alawenc <span class="gtkdoc opt">!</span> rtppcmapay <span class="gtkdoc opt">!</span> <span class="string">&apos;application/x-rtp, payload=(int)8, ssrc=(uint)1356955624&apos;</span> <span class="gtkdoc opt">!</span> srtpenc key<span class="gtkdoc opt">=</span><span class="string">&quot;012345678901234567890123456789012345678901234567890123456789&quot;</span> <span class="gtkdoc opt">!</span> udpsink port<span class="gtkdoc opt">=</span><span class="number">5004</span></pre></td>
      </tr>
    </tbody>
  </table>
</div>

<p> Send PCMA SRTP packets through UDP, nothing how the SSRC is forced so
that the receiver will recognize it.</p>
</div>
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
<a name="id-1.2.212.6.15.1"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
<col>
</colgroup>
<tbody>
<tr>
<td><p><span class="term">plugin</span></p></td>
<td>
            <a class="link" href="gst-plugins-bad-plugins-plugin-srtp.html#plugin-srtp">srtp</a>
          </td>
</tr>
<tr>
<td><p><span class="term">author</span></p></td>
<td>Gabriel Millaire &lt;millaire.gabriel@collabora.com&gt;</td>
</tr>
<tr>
<td><p><span class="term">class</span></p></td>
<td>Filter/Network/SRTP</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2">
<a name="id-1.2.212.6.15.2"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
<col>
</colgroup>
<tbody>
<tr>
<td><p><span class="term">name</span></p></td>
<td>rtcp_sink</td>
</tr>
<tr>
<td><p><span class="term">direction</span></p></td>
<td>sink</td>
</tr>
<tr>
<td><p><span class="term">presence</span></p></td>
<td>always</td>
</tr>
<tr>
<td><p><span class="term">details</span></p></td>
<td>application/x-srtcp</td>
</tr>
</tbody>
</table></div>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
<col>
</colgroup>
<tbody>
<tr>
<td><p><span class="term">name</span></p></td>
<td>rtp_sink</td>
</tr>
<tr>
<td><p><span class="term">direction</span></p></td>
<td>sink</td>
</tr>
<tr>
<td><p><span class="term">presence</span></p></td>
<td>always</td>
</tr>
<tr>
<td><p><span class="term">details</span></p></td>
<td>application/x-srtp</td>
</tr>
</tbody>
</table></div>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
<col>
</colgroup>
<tbody>
<tr>
<td><p><span class="term">name</span></p></td>
<td>rtcp_src</td>
</tr>
<tr>
<td><p><span class="term">direction</span></p></td>
<td>source</td>
</tr>
<tr>
<td><p><span class="term">presence</span></p></td>
<td>always</td>
</tr>
<tr>
<td><p><span class="term">details</span></p></td>
<td>application/x-rtcp</td>
</tr>
</tbody>
</table></div>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
<col>
</colgroup>
<tbody>
<tr>
<td><p><span class="term">name</span></p></td>
<td>rtp_src</td>
</tr>
<tr>
<td><p><span class="term">direction</span></p></td>
<td>source</td>
</tr>
<tr>
<td><p><span class="term">presence</span></p></td>
<td>always</td>
</tr>
<tr>
<td><p><span class="term">details</span></p></td>
<td>application/x-rtp</td>
</tr>
</tbody>
</table></div>
</div>
</div>
</div>
<div class="refsect1">
<a name="gst-plugins-bad-plugins-srtpdec.functions_details"></a><h2>Functions</h2>
<p></p>
</div>
<div class="refsect1">
<a name="gst-plugins-bad-plugins-srtpdec.other_details"></a><h2>Types and Values</h2>
<div class="refsect2">
<a name="GstSrtpDec"></a><h3>struct GstSrtpDec</h3>
<pre class="programlisting">struct GstSrtpDec {
  GstElement element;

  guint replay_window_size;

  GstPad *rtp_sinkpad, *rtp_srcpad;
  GstPad *rtcp_sinkpad, *rtcp_srcpad;

  gboolean ask_update;
  srtp_t session;
  gboolean first_session;
  GHashTable *streams;

  gboolean rtp_has_segment;
  gboolean rtcp_has_segment;

#ifndef HAVE_SRTP2
  gboolean roc_changed;
#endif
};
</pre>
</div>
</div>
<div class="refsect1">
<a name="gst-plugins-bad-plugins-srtpdec.property-details"></a><h2>Property Details</h2>
<div class="refsect2">
<a name="GstSrtpDec--replay-window-size"></a><h3>The <code class="literal">“replay-window-size”</code> property</h3>
<pre class="programlisting">  “replay-window-size”       <a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guint"><span class="type">guint</span></a></pre>
<p>Size of the replay protection window.</p>
<p>Flags: Read / Write</p>
<p>Allowed values: [64,32768]</p>
<p>Default value: 128</p>
</div>
<hr>
<div class="refsect2">
<a name="GstSrtpDec--stats"></a><h3>The <code class="literal">“stats”</code> property</h3>
<pre class="programlisting">  “stats”                    <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstStructure.html#GstStructure-struct"><span class="type">GstStructure</span></a> *</pre>
<p>Various statistics.</p>
<p>Flags: Read</p>
</div>
</div>
<div class="refsect1">
<a name="gst-plugins-bad-plugins-srtpdec.signal-details"></a><h2>Signal Details</h2>
<div class="refsect2">
<a name="GstSrtpDec-clear-keys"></a><h3>The <code class="literal">“clear-keys”</code> signal</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
user_function (<a class="link" href="gst-plugins-bad-plugins-srtpdec.html#GstSrtpDec" title="struct GstSrtpDec"><span class="type">GstSrtpDec</span></a> *gstsrtpdec,
               <a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>    user_data)</pre>
<p>Clear the internal list of streams</p>
<div class="refsect3">
<a name="GstSrtpDec-clear-keys.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>gstsrtpdec</p></td>
<td class="parameter_description"><p>the element on which the signal is emitted</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>user_data</p></td>
<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<p>Flags: <a href="/usr/share/gtk-doc/html/gobject/gobject-Signals.html#G-SIGNAL-ACTION:CAPS">Action</a></p>
</div>
<hr>
<div class="refsect2">
<a name="GstSrtpDec-hard-limit"></a><h3>The <code class="literal">“hard-limit”</code> signal</h3>
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstCaps.html#GstCaps-struct"><span class="returnvalue">GstCaps</span></a>*
user_function (<a class="link" href="gst-plugins-bad-plugins-srtpdec.html#GstSrtpDec" title="struct GstSrtpDec"><span class="type">GstSrtpDec</span></a> *gstsrtpdec,
               <a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guint"><span class="type">guint</span></a>       ssrc,
               <a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>    user_data)</pre>
<p>Signal emited when the stream with <em class="parameter"><code>ssrc</code></em>
 has reached the
hard limit of utilisation of it's master encryption key.
User should provide a new key and new RTP and RTCP encryption
ciphers and authentication, and return them wrapped in a
GstCaps. If user could not provide those parameters or signal
is not answered, the buffers of this stream will be dropped.</p>
<div class="refsect3">
<a name="GstSrtpDec-hard-limit.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>gstsrtpdec</p></td>
<td class="parameter_description"><p>the element on which the signal is emitted</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>ssrc</p></td>
<td class="parameter_description"><p>The unique SSRC of the stream</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>user_data</p></td>
<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<p>Flags: <a href="/usr/share/gtk-doc/html/gobject/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p>
</div>
<hr>
<div class="refsect2">
<a name="GstSrtpDec-request-key"></a><h3>The <code class="literal">“request-key”</code> signal</h3>
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstCaps.html#GstCaps-struct"><span class="returnvalue">GstCaps</span></a>*
user_function (<a class="link" href="gst-plugins-bad-plugins-srtpdec.html#GstSrtpDec" title="struct GstSrtpDec"><span class="type">GstSrtpDec</span></a> *gstsrtpdec,
               <a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guint"><span class="type">guint</span></a>       ssrc,
               <a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>    user_data)</pre>
<p>Signal emited to get the parameters relevant to stream
with <em class="parameter"><code>ssrc</code></em>
. User should provide the key and the RTP and
RTCP encryption ciphers and authentication, and return
them wrapped in a GstCaps.</p>
<div class="refsect3">
<a name="GstSrtpDec-request-key.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>gstsrtpdec</p></td>
<td class="parameter_description"><p>the element on which the signal is emitted</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>ssrc</p></td>
<td class="parameter_description"><p>The unique SSRC of the stream</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>user_data</p></td>
<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<p>Flags: <a href="/usr/share/gtk-doc/html/gobject/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p>
</div>
<hr>
<div class="refsect2">
<a name="GstSrtpDec-soft-limit"></a><h3>The <code class="literal">“soft-limit”</code> signal</h3>
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstCaps.html#GstCaps-struct"><span class="returnvalue">GstCaps</span></a>*
user_function (<a class="link" href="gst-plugins-bad-plugins-srtpdec.html#GstSrtpDec" title="struct GstSrtpDec"><span class="type">GstSrtpDec</span></a> *gstsrtpdec,
               <a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guint"><span class="type">guint</span></a>       ssrc,
               <a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>    user_data)</pre>
<p>Signal emited when the stream with <em class="parameter"><code>ssrc</code></em>
 has reached the
soft limit of utilisation of it's master encryption key.
User should provide a new key and new RTP and RTCP encryption
ciphers and authentication, and return them wrapped in a
GstCaps.</p>
<div class="refsect3">
<a name="GstSrtpDec-soft-limit.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>gstsrtpdec</p></td>
<td class="parameter_description"><p>the element on which the signal is emitted</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>ssrc</p></td>
<td class="parameter_description"><p>The unique SSRC of the stream</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>user_data</p></td>
<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<p>Flags: <a href="/usr/share/gtk-doc/html/gobject/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p>
</div>
<hr>
<div class="refsect2">
<a name="GstSrtpDec-remove-key"></a><h3>The <code class="literal">“remove-key”</code> signal</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
user_function (<a class="link" href="gst-plugins-bad-plugins-srtpdec.html#GstSrtpDec" title="struct GstSrtpDec"><span class="type">GstSrtpDec</span></a> *gstsrtpdec,
               <a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guint"><span class="type">guint</span></a>       ssrc,
               <a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>    user_data)</pre>
<p>Removes keys for a specific SSRC</p>
<div class="refsect3">
<a name="GstSrtpDec-remove-key.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>gstsrtpdec</p></td>
<td class="parameter_description"><p>the element on which the signal is emitted</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>ssrc</p></td>
<td class="parameter_description"><p>The SSRC for which to remove the key.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>user_data</p></td>
<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<p>Flags: <a href="/usr/share/gtk-doc/html/gobject/gobject-Signals.html#G-SIGNAL-ACTION:CAPS">Action</a></p>
</div>
</div>
<div class="refsect1">
<a name="gst-plugins-bad-plugins-srtpdec.see-also"></a><h2>See Also</h2>
<p>srtpenc</p>
</div>
</div>
<div class="footer">
<hr>Generated by GTK-Doc V1.28</div>
</body>
</html>